package cn.com.zero.front.auth.service;

import cn.com.zero.front.auth.po.AuthenticationApplyPO;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;

/**
 * @author xiongxj
 * @version 1.0.0
 * @Description 实名认证service接口
 * @createTime 2023/3/16 14:24
 */
public interface IRealNameVerifyService {

    /**
     * 证件号是否存在
     *
     * @param cardNo   证件号
     * @param cardType 证件类型
     * @return true：存在 false：不存在
     */
    boolean isExistCardNo(String cardNo, Integer cardType);

    /**
     * 添加实名申请
     *
     * @param userId        用户ID
     * @param realName      真实姓名
     * @param cardType      证件类型
     * @param cardNo        证件号
     * @param validity      有效期
     * @param frontDocument 证件照(正面)
     * @param backDocument  证件照(背面)
     * @param handDocument  证件照(手持)
     */
    void addAuthenticationApply(String userId, String realName, Integer cardType, String cardNo, Date validity, String frontDocument, String backDocument, String handDocument);

    /**
     * 查询最新的实名申请
     *
     * @param userId 用户ID
     * @return 实名申请
     */
    AuthenticationApplyPO queryAuthenticationApply(String userId);

    /**
     * 修改实名信息
     *
     * @param userId        用户ID
     * @param validity      有效期
     * @param frontDocument 证件照(正面)
     * @param backDocument  证件照(背面)
     * @param handDocument  证件照(手持)
     */
    void updateAuthenticationInfo(String userId, Date validity, String frontDocument, String backDocument, String handDocument);

    /**
     * 证件照上传
     *
     * @param idPhoto 证件照
     * @return 相对文件路径
     */
    String uploadAuthenticationApply(MultipartFile idPhoto);
}
